Clean Architecture (Arquitectura Limpia)

Propuesta de Robert C. Martin. para organizar el código y hacerlo independiente cada parte del mismo. Separa la lógica de negocio de los detalles técnicos.

[ Círculo Interno ]    -> mayor importancia, menor dependencia
[ Círculo Externo ]    -> detalles que pueden cambiar con facilidad

┌───────────────────────────────────────────────┐
│ Frameworks & Drivers│ ← UI, DB, APIs externas
┌───────────────────────────────────────────────┤
│ Interface Adapters │ ← Controllers, Presenters, Gateways
┌───────────────────────────────────────────────┤
│ Application Business │ ← Casos de uso (interactors)
┌───────────────────────────────────────────────┤
│ Enterprise Business │ ← Entidades del dominio
┌───────────────────────────────────────────────┘

  1. Entities (Enterprise Businees Rules)
    • Reglas de negocio mas generales.
    • Son independientes
    • Clases como User, Invoice, Order
  2. Uses Cases (Application Business Rules)
    • Lógica del negocio, que hace el sistema cuando ocurre un caso de uso.
    • Controlan las entidades
    • Ej: RegisterUser
  3. Interface Adapters
    - Adaptan los datos de entrada / salida para que se puedan usarse en los casos de uso y entidades
    - Estan los controllers(MVC), Presenters (para formatear la salida), Gateways (implementaciones de interfaces de acceso a datos.)
    4.Frameworks y Drivers:
  • Frameworks, UI, DB, AP's

Clean-Architecture-img.png